home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 5791 / 5791.xpi / chrome / flagfox.jar / content / options.xul < prev    next >
Extensible Markup Language  |  2009-06-04  |  16KB  |  278 lines

  1. <?xml version="1.0"?>
  2.  
  3. <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
  4. <?xml-stylesheet href="chrome://flagfox/content/style.css" type="text/css"?>
  5.  
  6. <!DOCTYPE window SYSTEM "chrome://flagfox/locale/flagfox.dtd">
  7.  
  8. <window class="dialog"
  9.         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  10.         orient="vertical"
  11.         autostretch="always"
  12.         onload="init();"
  13.         title="&prefs.title;">
  14.  
  15.     <keyset>
  16.         <key keycode="VK_ESCAPE" oncommand="window.close();"/>
  17.     </keyset>
  18.  
  19.     <script type="application/x-javascript" src="chrome://flagfox/content/util.js"/>
  20.     <script type="application/x-javascript">
  21.     <![CDATA[
  22.         var appInfo = null;
  23.         var versionChecker = null;
  24.         var prefs = null;
  25.  
  26.         function init()
  27.         {
  28.             try
  29.             {
  30.                 appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
  31.                                     .getService(Components.interfaces.nsIXULAppInfo);
  32.                 versionChecker = Components.classes["@mozilla.org/xpcom/version-comparator;1"]
  33.                                            .getService(Components.interfaces.nsIVersionComparator);
  34.                 prefs = Components.classes["@mozilla.org/preferences-service;1"]
  35.                                   .getService(Components.interfaces.nsIPrefBranch);
  36.  
  37.                 resizeSideDropdown();
  38.  
  39.                 if (!prefs.getBoolPref("flagfox.warn.proxy") ||
  40.                     !prefs.getBoolPref("flagfox.warn.updates") ||
  41.                     !prefs.getBoolPref("flagfox.warn.tld"))
  42.                     document.getElementById("resetMessagesLink").hidden = false;  // Only show reset link if there's something to reset
  43.  
  44.                 loadCheck(document.getElementById("flagfox.usealticons"));
  45.                 loadSelect(document.getElementById("flagfox.position.bar"));
  46.                 loadSelect(document.getElementById("flagfox.position.side"));
  47.                 loadSelect(document.getElementById("flagfox.middleclick"));
  48.                 loadSelect(document.getElementById("flagfox.openlinksin"));
  49.                 loadCheck(document.getElementById("flagfox.customlookup.enabled"));
  50.                 loadField(document.getElementById("flagfox.customlookup.name"));
  51.                 loadField(document.getElementById("flagfox.customlookup.url"));
  52.  
  53.                 disableInvalidPositions();
  54.                 checkEnableCustomLookup();
  55.             }
  56.             catch (e) { Flagfox_error("Failed to init options window",e); }
  57.         }
  58.  
  59.         // For each element, "id" contains the pref name and the childrens' "id"s are the pref values
  60.         // Flagfox_prefObserver should be listening so changes should apply immediately
  61.         function loadCheck(node) { node.checked = prefs.getBoolPref(node.id); }
  62.         function loadSelect(node) { node.selectedItem = document.getElementById(prefs.getCharPref(node.id)); }
  63.         function loadField(node) { node.value = Flagfox_getUCharPref(prefs,node.id); }
  64.         function applyCheck(node) { prefs.setBoolPref(node.id,node.checked); }
  65.         function applySelect(node) { prefs.setCharPref(node.id,node.selectedItem.id); }
  66.         function applyField(node) { Flagfox_setUCharPref(prefs,node.id,node.value); }
  67.  
  68.         /* Can't rely on auto-sizing for side menulist/menupopup. If the "left most" string is longer than the "right most" string in this locale
  69.            then switching bars will change its size on hiding/showing "left most". Manually setting the size including any hidden items works around
  70.            this. This doesn't work in old browsers, however their address bar side menu is disabled because only the right position is available. */
  71.         function resizeSideDropdown()
  72.         {
  73.             var side = document.getElementById("flagfox.position.side");
  74.             if (versionChecker.compare(appInfo.platformVersion,"1.9") >= 0)  // Gecko 1.9+
  75.             {
  76.                 var sideItems = side.getElementsByTagName("menuitem");
  77.                 for (var i=0; i < sideItems.length; i++)
  78.                     if (side.boxObject.width < sideItems[i].boxObject.width)
  79.                         side.style.minWidth = side.firstChild.style.minWidth = sideItems[i].boxObject.width + "px";
  80.             }
  81.             else  // Gecko 1.8.x
  82.             {
  83.                 side.setAttribute("sizetopopup","always");  // No menuitems need be hidden, so this should be fine
  84.             }
  85.         }
  86.  
  87.         function resetIconSide()  // Set side to default for newly chosen bar
  88.         {
  89.             switch (prefs.getCharPref("flagfox.position.bar"))
  90.             {
  91.                 case "statusbar":  prefs.setCharPref("flagfox.position.side","RM"); break;
  92.                 case "addressbar": prefs.setCharPref("flagfox.position.side","R");  break;
  93.             }
  94.             loadSelect(document.getElementById("flagfox.position.side"));
  95.         }
  96.  
  97.         function disableInvalidPositions()  // Decides what menu options to disable based on what works in the detected browser
  98.         {
  99.             var inAddressBar = (prefs.getCharPref("flagfox.position.bar") == "addressbar");
  100.             var sidePosMenu = document.getElementById("flagfox.position.side");
  101.             /*
  102.                 Firefox 3+:
  103.                     full support
  104.                 Flock 2+:
  105.                     star button is not in address bar; no addressbar-RM exists, so hide it
  106.                 Firefox 2, Flock 1, & SeaMonkey 2:
  107.                     addressbar-L does not work and there is no star button; only address bar position is R, so disable side menu
  108.                 Firefox 1.x & SeaMonkey 1.x:
  109.                     not supported (see install.rdf)
  110.             */
  111.             switch (appInfo.ID)
  112.             {
  113.                 case "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}":  // Firefox
  114.                     if (versionChecker.compare(appInfo.version,"3") < 0)
  115.                         sidePosMenu.disabled = inAddressBar;
  116.                     break;
  117.                 case "{a463f10c-3994-11da-9945-000d60ca027b}":  // Flock
  118.                     if (versionChecker.compare(appInfo.version,"2") < 0)
  119.                         sidePosMenu.disabled = inAddressBar;
  120.                     else
  121.                         document.getElementById("RM").hidden = inAddressBar;
  122.                     break;
  123.                 case "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}":  // SeaMonkey
  124.                     sidePosMenu.disabled = inAddressBar;
  125.                     break;
  126.                 default:
  127.                     Flagfox_error("Unsupported application: "+appInfo.ID, null);
  128.                     break;
  129.             }
  130.             // There is no addressbar-LM option, so hide the LM menu entry if it's not needed (if menu is enabled; see resizeSideDropdown())
  131.             document.getElementById("LM").hidden = (inAddressBar && !sidePosMenu.disabled);
  132.         }
  133.  
  134.         function checkEnableCustomLookup()  // Greys out custom action section and option when disabled
  135.         {
  136.             var isDisabled = !prefs.getBoolPref("flagfox.customlookup.enabled");
  137.             // Disable custom action fields and labels
  138.             var children = document.getElementById("customActionFields").getElementsByTagName("*");
  139.             for (var i=0; i < children.length; i++)
  140.                 children[i].disabled = isDisabled;
  141.             // Disable "Custom" option in middle-click dropdown
  142.             var customActionMenuItem = document.getElementById("Custom");
  143.             customActionMenuItem.disabled = isDisabled;
  144.             if (customActionMenuItem.selected && isDisabled)  // and select something else if needed
  145.             {
  146.                 prefs.setCharPref("flagfox.middleclick","Nothing");
  147.                 loadSelect(document.getElementById("flagfox.middleclick"));
  148.             }
  149.         }
  150.  
  151.         function resetIfBlank(node,text)
  152.         {
  153.             if (node.value == "")
  154.                 node.value = text;
  155.         }
  156.  
  157.         function resetMessagesPrefs()  // Resets all "don't show this again" selections and resets messages per session limits (via Flagfox_prefObserver)
  158.         {
  159.             prefs.setBoolPref("flagfox.warn.proxy",true);
  160.             prefs.setBoolPref("flagfox.warn.updates",true);
  161.             prefs.setBoolPref("flagfox.warn.tld",true);
  162.             document.getElementById("resetMessagesLink").hidden = true;
  163.         }
  164.  
  165.         function openIconsPreview()
  166.         {
  167.             window.openDialog("chrome://flagfox/content/preview.xul", "FlagfoxIconsPreview", "chrome,dialog,centerscreen,modal");
  168.         }
  169.     ]]>
  170.     </script>
  171.  
  172.     <groupbox>
  173.         <caption label="&prefs.appearancecaption;"/>
  174.  
  175.         <hbox>
  176.             <checkbox label="&prefs.flagslabel;" id="flagfox.usealticons" oncommand="applyCheck(this);"/>
  177.             <spacer minwidth="5"/>
  178.             <image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAApxJREFUOMulk8tr1FccxT93TKxkTCYxCpmJNo%2FRqChooYlSLAjFTSFSO1RBoi5cdJVtFVz5HwgKPla%2BsKV0mq6FWpqUhs6iG5nGMNXENI%2FRGDPJJP3N3O%2B99%2BtCSHy0Gz3LL18%2BHDjnGFXlfVTz5iFzdTQtwR1XF05WrbQ4DSihCOGmd%2BHO4NlPHr76b1518MWVkYy1crEjocmetkYa1q4BYCFyDBWecH96eQaj%2Fbnzn2XfAhy%2BnM%2FYSG4c2lYX391az9ScpbgQ4YOSqFtDKrGOwrMyAz8%2FXKaGU7kLh7MrgN5L9ztF3NChrfHU9pZ6cmMlnBP2tDWBKn%2BOzWNihl3J9fwzX%2Banu4VpNHyau3b0UQxAguvraNDUjmQDw4Xn2Mgi1UDvx0l6u1OIE2zVkp8s0b4xQdfWhpRG0gcQA7Den9jX3sxYcQkRQYLHB8ePwxNkhyewYrHOshRFjM8ucmBvG8baEysp2Mi2NtXXUJgp4bxHvKAh0HewEwWGR6bREABDcW6RrtRm1Eetqw6qFg2KU7CuSvCeEJT843n%2BrTi8dXjxOHE4K6gBvGcFAH5qbrlCc7wWozE0KMF7XiakeHEEEYJYEvEPeLJYxpgwtQqw7tZgfpK2TXEIAZxyZH87Oz9som5dLf1H9iAiOBE6WhIMDf0N6K3VJlai2yMPyl%2Bnk42pnq5N%2FJaf5PtfR%2Fn23l%2BoOFQDivLR9i2MlxZ5lC9MG7j9WpG6T3%2BX0XLlxudf7o53bqznweNZZp%2BXCS6wobGObVuaGS8tce%2BHX5YxtadyA99k36py97HrGdReTO9KJg%2FsS9O8fi2gPF2oMPj7KBP5wowxsf7cwJnsf24BoOerK2lVfxwNJwmVFjRgjCkCNw1y54%2BBc%2F8%2FpnfRC6g%2FgntZtiG5AAAAAElFTkSuQmCC" tooltiptext="&prefs.previewicons;" style="cursor: pointer;" onclick="openIconsPreview();"/>
  179.             <spacer minwidth="5" flex="1"/>
  180.         </hbox>
  181.  
  182.         <separator class="thin"/>
  183.  
  184.         <hbox>
  185.             <label value="&prefs.poslabel;" control="flagfox.position.bar"/>
  186.             <menulist sizetopopup="always" id="flagfox.position.bar" oncommand="applySelect(this); resetIconSide(); disableInvalidPositions();">
  187.                 <menupopup>
  188.                     <menuitem id="addressbar" label="&prefs.posAlabel;"/>
  189.                     <menuitem id="statusbar" label="&prefs.posSlabel;"/>
  190.                 </menupopup>
  191.             </menulist>
  192.             <menulist sizetopopup="none" id="flagfox.position.side" oncommand="applySelect(this);">
  193.                 <menupopup>
  194.                     <menuitem id="LM" label="&prefs.posLMlabel;"/>
  195.                     <menuitem id="L" label="&prefs.posLlabel;"/>
  196.                     <menuitem id="R" label="&prefs.posRlabel;"/>
  197.                     <menuitem id="RM" label="&prefs.posRMlabel;"/>
  198.                 </menupopup>
  199.             </menulist>
  200.         </hbox>
  201.     </groupbox>
  202.  
  203.     <separator class="thin"/>
  204.  
  205.     <groupbox>
  206.         <caption label="&prefs.clickactioncaption;"/>
  207.  
  208.         <hbox>
  209.             <label value="&prefs.middleclicklabel;" control="flagfox.middleclick"/>
  210.             <menulist sizetopopup="always" id="flagfox.middleclick" oncommand="applySelect(this);">
  211.                 <menupopup>
  212.                     <!-- <menuitem id="Geotool" label="&menu.geotool;"/> -->
  213.                     <menuitem id="Wikipedia" label="&menu.wikipedia;"/>
  214.                     <menuitem id="Whois" label="&menu.whois;"/>
  215.                     <menuitem id="CopyIP" label="&menu.copyip;"/>
  216.                     <menuitem id="Options" label="&menu.options;"/>
  217.                     <menuitem id="Nothing" label="&menu.nothing;"/>
  218.                     <menuitem id="Custom" label="&menu.custom;"/>
  219.                 </menupopup>
  220.             </menulist>
  221.         </hbox>
  222.  
  223.         <separator class="thin"/>
  224.  
  225.         <hbox>
  226.             <label value="&prefs.tabPreflabel;" control="flagfox.openlinksin"/>
  227.             <menulist sizetopopup="always" id="flagfox.openlinksin" oncommand="applySelect(this);">
  228.                 <menupopup>
  229.                     <menuitem id="tabFG" label="&prefs.tabFGlabel;"/>
  230.                     <menuitem id="tabBG" label="&prefs.tabBGlabel;"/>
  231.                     <menuitem id="winFG" label="&prefs.winFGlabel;"/>
  232.                     <menuitem id="winBG" label="&prefs.winBGlabel;"/>
  233.                     <menuitem id="currentTab" label="&prefs.currentTablabel;"/>
  234.                 </menupopup>
  235.             </menulist>
  236.         </hbox>
  237.  
  238.         <separator class="thin"/>
  239.  
  240.         <vbox>
  241.             <hbox>
  242.                 <checkbox label="&prefs.customaction;" id="flagfox.customlookup.enabled" oncommand="applyCheck(this); checkEnableCustomLookup();"/>
  243.                 <spacer minwidth="5"/>
  244.                 <image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAAqRJREFUOMulk91PkmEYxv1b4E9oreZq1Wqd1dY46KADp%2BYn0NRytQyWs3SY0ywpNTOdCmrqnIoCbwIiiCbKlyDwYiJfysdEeOFVs%2B3qjTWcy9laB7%2BTe8%2F1265n950DIOd%2F%2BGOgIw%2FZWveBQOPcJ1XrNPXFnqIUNoqcsSQEU6Y99pkCtZPmzDrSIU%2F4EBs7NNxBKoNnOw1HII2RxWhoaCHMOVVArKU4cmsytRnZh%2FnbLqRzfojGnKgfWUcXsQGDIwpXiMInlT%2FVRWxxTghk5gRrcjUe3AjTWHDGUMuEOgkP%2FDEavlgaY4sB1EitUK6GYPcl0DpJBpvHXaysYHQpKlzzp7DiiUM4aMfjHjPSB0cMP35zhNpBC2r6TZi3R6Bdi6BOahVmBX1zIdLFdO0mNlHdY0JV9wr80TSmlgNQ27ZBMwK1LQhuuw6tUw5Yvbt40m0ks4IOhZd2B5MQSiyo%2FGgEr9PAPNZj2ujDLnWAnV0avbMulLZpUflBD4dvDzyxns4KWsZdtCuQxNMBC7gdepS%2F16HsnQ5J%2Bju2IhT4Yi2KWlS4z8AXa2D3x5HfpD4WvJDaSNtWHGKZC7x2A8rE8yh5O4fi1%2BoMha8IFDYqUNAoR710GUZPBHfr5McVmD5ChTEAvSOCyg5DNhhL7COyRyNPNJOhUCQDseqDhKlzq2bi%2BBP54gVW%2BZv54JIzAuWKH9w2DQqalGgbN2X4Fc5vmMCwxg2NJYCb1WPB6w9HWScWKU80y7nXQKR09m2orUG8lCyhpFmOosZpPO%2FVQ2n0QmX242rF59TlB0OcU1f5jlDGuf1sMtRHrOOrOwyLN5Zh0bmDLpkNuTxp6GK5hHPmMd14NMq%2BVjUiuFIxTF7iD1K5XCl1oWyAPF%2FaLzhX3Mf%2B6zX%2BKz8B168For1NvcQAAAAASUVORK5CYII%3D" tooltiptext="&prefs.customactionsyntaxhelp;" style="cursor: pointer;" popup="customActionSyntaxPopup"/>
  245.                 <popup id="customActionSyntaxPopup" style="padding: 4px; -moz-appearance: tooltip;" onclick="this.hidePopup();">
  246.                     <text value="&prefs.customactionsyntaxhelphead;"/>
  247.                     <text value="{domainName} - &prefs.customactionsyntaxhelpbody1;"/>
  248.                     <text value="{IPaddress} - &prefs.customactionsyntaxhelpbody2;"/>
  249.                     <text value="{countryName} - &prefs.customactionsyntaxhelpbody3;"/>
  250.                     <text value="{countryCode} - &prefs.customactionsyntaxhelpbody4;"/>
  251.                 </popup>
  252.             </hbox>
  253.             <vbox id="customActionFields" style="-moz-padding-start: 5px;">
  254.                 <hbox>
  255.                     <label value="&prefs.customactionname;" control="flagfox.customlookup.name"/>
  256.                     <textbox flex="1" id="flagfox.customlookup.name" maxlength="20" onchange="resetIfBlank(this,'&menu.custom;'); applyField(this);"/>
  257.                 </hbox>
  258.                 <hbox>
  259.                     <label value="&prefs.customactionurl;" control="flagfox.customlookup.url"/>
  260.                     <textbox flex="1" id="flagfox.customlookup.url" maxlength="1000" onchange="applyField(this);"/>
  261.                 </hbox>
  262.             </vbox>
  263.         </vbox>
  264.     </groupbox>
  265.  
  266.     <hbox>
  267.         <spacer flex="1"/>
  268.         <hbox id="resetMessagesLink" hidden="true" class="link" onclick="resetMessagesPrefs();">
  269.             <image src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAABGdBTUEAAK%2FINwWK6QAAAZ5JREFUOMuNkt0rBFEYh%2FdfXBe40CKSIp9ZdpUs7VIiNiUb0thoYrE1JdbHWufChSj5mF27a%2BRGynfZ48K8fmdihoY1p56aOTPn957znNflbpVLhuO5ze6FLPPPg2iGeWdPWcfMCWufPmZtkSPWMnnIfBHGxL9E5PqOK7iUS4XXb5gTmkd3U7YAUdkpdUNJZgvwRy%2FEpCNqBrbsAb65tPFRSWUyU4mr18HVSz6wAmJ5HlrM8n45zQMLZ7w3esKbJg44XGhw4bECJNUIGFO0wnTylhdjWLnmcKHBRd4MaAzvGwGi8n90SuccLjS40MwAbKevfmSPdUkqf3x5A5w%2FPAsKJveCpwJ%2FeX17xCINLqyArwe4EJNafEe9G1PyOioR%2BoLQF4RjEnqD0BeEviD0BcEFoXiDFSCpRkAoliOc0xFw8W4GwIURICo7BS6s%2B8R2xuFCQ1%2BQ0wEXP5vi08WfC3SBLtCN96rgxi8BEFZsfIWI4Qms2QPgwvER3G2yPQAuZLgwBNUOblN1MEGV%2FetU0aNQeXecynzLVOqNiSsUyB%2F6FSN74CJXYgAAAABJRU5ErkJggg%3D%3D"/>
  270.             <spacer minwidth="5"/>
  271.             <text value="&prefs.resetmessageslabel;"/>
  272.         </hbox>
  273.         <spacer flex="5"/>
  274.         <button label="&close;" oncommand="window.close();" default="true"/>
  275.     </hbox>
  276.  
  277. </window>
  278.